-- ~/.config/nvim/lua/plugins/coc.lua
return {
  -- 主插件
  {
    'https://gitee.com/cc906979421/coc.nvim.git',
    branch = 'release',          -- 也可以用 'master'，看你习惯
    lazy = false,                -- 插件管理器加载时就要准备好
    priority = 1000,             -- 建议设高一点，更早加载

    -- 1. 插件下载后执行一次 yarn install
    build = 'yarn install --frozen-lockfile',

    -- 2. 插件真正加载时执行的配置
    config = function()
      -------------------------------------------------
      -- 基础选项
      -------------------------------------------------
      vim.opt.backup      = false
      vim.opt.writebackup = false
      vim.opt.signcolumn  = 'yes'

      -------------------------------------------------
      -- 键位
      -------------------------------------------------
      local keyset = vim.keymap.set

      _G.check_back_space = function()
        local col = vim.fn.col('.') - 1
        return col == 0 or vim.fn.getline('.'):sub(col, col):match('%s') ~= nil
      end

      local opts = { silent = true, noremap = true, expr = true, replace_keycodes = false }

      keyset('i', '<C-j>', 'coc#pum#visible() ? coc#pum#next(1) : v:lua.check_back_space() ? "<Tab>" : coc#refresh()', opts)
      keyset('i', '<C-k>', 'coc#pum#visible() ? coc#pum#prev(1) : "<C-h>"', opts)
      keyset('i', '<CR>',  'coc#pum#visible() ? coc#pum#confirm() : "<C-g>u<CR><C-r>=coc#on_enter()<CR>"', opts)

      -------------------------------------------------
      -- 其余 Coc 配置
      -------------------------------------------------
      -- 如果你还有别的 Coc 命令 / 函数 / 自动命令，全部放这里
    end,

    -- 3. 插件加载前需要提前设置的变量
    init = function()
      -- 自动安装扩展
      vim.g.coc_global_extensions = {
        'coc-json',
        'coc-tsserver',
        'coc-clangd',
        'coc-go',
        'coc-html',
        'coc-snippets',
        'coc-highlight',
        -- 'coc-spell-checker',
        'coc-marketplace',
      }
    end,
  },
}
